#define _CRT_SECURE_NO_WARNINGS

//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//    char arr1[101] = { 0 };
//    char arr2[101] = { 0 };
//    char ch;
//    int i = 0, j = 0;
//    while ((ch = getchar()) != '\n')
//    {
//        arr1[i++] = ch;
//    }
//    while ((ch = getchar()) != '\n')
//    {
//        arr2[j++] = ch;
//    }
//
//    for (int k = 0; k < (int)strlen(arr1); ++k)
//    {
//        if (strchr(arr2, arr1[k]) == NULL)
//        {
//            printf("%c", arr1[k]);
//        }
//    }
//
//    return 0;
//}

//#include <iostream>
//
//using namespace std;
//
//const int N = 100002;
//int n;
//int q[N];
//
//int mid_num(int* a, int l, int r)
//{
//    int mid = (l + r) / 2;
//
//    if (a[l] < a[r])
//    {
//        if (a[l] > a[mid])
//            return l;
//        else if (a[r] < a[mid])
//            return r;
//        else
//            return mid;
//    }
//    else
//    {
//        if (a[r] > a[mid])
//            return r;
//        else if (a[l] < a[mid])
//            return l;
//        else
//            return mid;
//    }
//}
//
//void quick_sort(int* a, int l, int r)
//{
//    if (l >= r) return;
//
//    int tmp = mid_num(a, l, r);
//    swap(a[tmp], a[l]);
//    int x = a[l], i = l - 1, j = r + 1;
//
//    while (i < j)
//    {
//        do i++; while (q[i] < x);
//        do j--; while (q[j] > x);
//
//        if (i < j) swap(q[i], q[j]);
//    }
//
//    quick_sort(a, l, j);
//    quick_sort(a, j + 1, r);
//}
//
//int main()
//{
//    scanf("%d", &n);
//    for (int i = 0; i < n; ++i) scanf("%d", &q[i]);
//
//    quick_sort(q, 0, n - 1);
//
//    for (int i = 0; i < n; ++i) printf("%d", q[i]);
//
//    return 0;
//}


#include <iostream>
#include <vector>
using namespace std;

const int N = 1e6 + 10;

vector<int> add(vector<int>& A, vector<int>& B)
{
    vector<int> C;

    int tmp = 0;
    for (int i = 0; i < A.size() || i < B.size(); ++i)
    {
        if (i < A.size()) tmp += A[i];
        if (i < B.size()) tmp += B[i];
        C.push_back(tmp % 10);
        tmp /= 10;
    }

    if (tmp) C.push_back(1);

    return C;
}

int main()
{
    string a, b;
    vector<int> A, B;

    cin >> a >> b;

    for (int i = a.size() - 1; i >= 0; --i) A.push_back(a[i] - '0');
    for (int i = b.size() - 1; i >= 0; --i) B.push_back(b[i] - '0');

    auto C = add(A, B);

    for (int i = C.size() - 1; i >= 0; --i) cout << C[i];

    return 0;
}